<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>姓名案例-计算属性简写实现</title>
  <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
       姓：<input type="text" v-model="firstName"> <br><br>
       名：<input type="text" v-model="lastName"> <br><br>
       全名：{{fullName}} <br><br>

    </div>
    <script type='text/javascript'>
        new Vue({
            el:'#root',
            data:{
               firstName:'张',
               lastName:'三'
            },
            computed:{
                /**
                 * (1)只有当计算属性只需要读不需要写的时候(实际上大部分都是这样)，可以直接
                 *    把get()去掉，直接当作在计算属性后面的函数，然后简写fullName()
                 * */
                
                fullName(){
                    // return this.firstName.slice(0,3) + '-' +this.lastName
                    /**
                     * (2)computed无法使用异步任务，因为很可能没有返回值或者
                     *    返回值并不是返回给computed的属性
                     *    比如这里就是return给了定时器回调函数，fullnamme收不到因此没有值
                    */
                    setTimeout(() => {
                        return this.firstName.slice(0,3) + '-' +this.lastName
                    }, 1000);
                }
            }
        })
    </script>
</body>
</html>